/* 
组件总结
props：所有标签属性组成的对象，实现数据的传递
1. 函数组件 - 形参 props
2. 类组件 -   this.props

props的特点：
1. props 可以是任意数据类型
2. props 是单向数据流，不能直接修改 props 的值

props通讯技术： 
1. 父子组件 - 父组件传递属性和方法，子组件就能接收和使用
2. 兄弟组件 - 状态提升，兄弟之间的数据，都提升到父组件去维护

props 跨组件通讯：
1. React.createContext()创建上下文，返回对象，
2. 对象里面有Provider, Consumer(提供者和消费者)两个组件
<Provider value={数据}>
  // 跨多少个组件都行，只要是在Provider以内，都可以通过 Consumer 获取数据
  <Consumer>
    { (data) => 返回你想渲染的内容  }
  </Consumer>
</Provider>

更建议 redux 全局状态管理(后续会学)

props.children属性（children能实现的，props都一样能实现，两者几乎一样）
本质：组件标签夹着的内容区域

插槽：
1. 默认插槽 - 正常传递，组件内接收到渲染
2. 具名插槽 - 传递对象，对象内有对应的属性名
3. 作用域插槽 - 传递函数，函数留下形参，子组件传递过来即可获取到子组件的数据

props的校验：
作用：指定标签属性的类型，违反则报错
  1. 引进prop-types
  2. 给组件设置规则对象  Child.propTypes = { str: PropTypes.string }

props默认值：
作用：props传递了数据，以传递的为主，否则就使用默认值
语法：给组件设置默认对象， Child.defaultProps = { str: '默认值' }
*/
